#ifndef GEOMETRYLOADER_H
#define GEOMETRYLOADER_H

#include "GeometryTypes.h"

#include <map>
#include <string>

using std::map;
using std::string;

template <typename MeshType>
class GeometryLoader
{
public:
	GeometryLoader(){}
	~GeometryLoader();
	GeometryLoader(GeometryLoader& _ref){}
	
	static void LoadGeometry(const char* const _filePath, MeshDataPNT& mesh);
	static bool LoadStaticGeometry(const char* _filePath, MeshType& _mesh);
	static bool LoadAnimatedGeometry(string _filePath, MeshType*& _mesh);

	static MeshDataPT* GetPlane();
	static MeshDataPNT* GetBox();
	static MeshDataPNT* GetSphere();

private:
	static MeshDataPT m_Plane;
	static MeshDataPNT m_Box;
	static MeshDataPNT m_Sphere;

	static map<string, MeshType*> animatedMeshMap;
};

#include "GeometryLoader.hpp"

#endif